<?php

/**
 * Erzeugt und hält singleton instanzen von Holder Klassen
 * 
 * @author Shane
 *
 */
class HolderFactory {
	
	// Hier werden die Holder abgelegt
	private static $instances = array();
	
	/**
	 * Wenn die Holder noch nicht instanziirt wurde, dann geschieht dies implizit.
	 * In jedem Fall wird die singleton instanz des gewünschten Holder
	 * zurück gegeben.
	 * 
	 * @param string $holder_name
	 */
	public static function getInstance($holder_name) {
		
		if (!isset(self::$instances[$holder_name])) {
			// debug
			Logger::getInstance()->logFile('Creating instance of ' . $holder_name . 'Holder', LEVEL_DEBUG);
			
			// Den KLassennamen konstruieren
			$class_name = $holder_name .'Holder';
			self::$instances[$holder_name] = new $class_name();
		}
		
		// Die Instanz zurückgeben
		return self::$instances[$holder_name];
	}
}

?>